package com.example.ruralservicedigitalplatform.domain.po;

import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class Orders {
    /**
     * 订单状态 1待付款 2待接单 3已接单 4派送中 5已完成 6已取消
     */
    public static final Integer PENDING_PAYMENT = 1;
    public static final Integer TO_BE_CONFIRMED = 2;
    public static final Integer CONFIRMED = 3;
    public static final Integer DELIVERY_IN_PROGRESS = 4;
    public static final Integer COMPLETED = 5;
    public static final Integer CANCELLED = 6;

    /**
     * 支付状态 0未支付 1已支付 2退款
     */
    public static final Integer UN_PAID = 0;
    public static final Integer PAID = 1;
    public static final Integer REFUND = 2;
    // 订单唯一标识符
    private Long orderId;

    // 订单号
    private String orderNumber;

    // 订单总价
    private BigDecimal totalPrice;

    // 支付方式：1.微信2.支付宝（这里可以定义为枚举或者String，为了简单使用int）
    private Integer paymentType;

    // 支付状态：0未支付1已支付2退款（这里可以定义为枚举或者int，为了简单使用byte）
    private int payStatus;

    // villager_id（下单村民ID，外键引用用户表）
    private Long villagerId;
    //订单状态:1、未付款 2、已付款,未发货 3、已发货,未确认 4、确认收货，交易成功 5、交易取消，订单关闭 6、交易结束，已评价
    private Integer orderStatus;

    // 更新时间
    private LocalDateTime updateTime;

    // 创建用户
    private String createUser;

    // 电话号码
    private String phone;

    // 地址（注意：图片中有两个地址字段，这里只保留一个，根据实际需求选择）
    private String address;

    // 收货人
    private String consignee;

    // 拒绝原因（如果不需要，可以删除此字段）
    private String rejectionReason;

    // 取消原因
    private String cancelReason;

    // 预计送达时间（注意：图片中有两个预计送达时间字段，这里只保留一个，根据实际需求选择）
    // 并且字段名与图片中的不一致，这里按照图片中的“estimate_delivery_time”来命名
    private LocalDateTime estimatedDeliveryTime;

    // 备注
    private String remark;

    // 送达时间
    private LocalDateTime deliveryTime;

    private Long deliverymanId; // 配送员ID，外键引用配送员表
    private Long addressId; // 配送地址ID，外键引用地址表
    private LocalDateTime orderTime; // 下单时间
    private String updateUser; // 更新者
    private LocalDateTime cancelTime; // 订单取消时间（如果不需要，可以删除此字段）
    private int deliveryStatus; // 配送状态（如果不需要，可以删除此字段）
}
